/**
 * output package name
 */
package com.kingdee.eas.custom.hr.attendance.client;

import org.apache.log4j.*;

import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.border.*;
import javax.swing.BorderFactory;
import javax.swing.event.*;
import javax.swing.KeyStroke;

import com.kingdee.bos.ctrl.swing.*;
import com.kingdee.bos.ctrl.kdf.table.*;
import com.kingdee.bos.ctrl.kdf.data.event.*;
import com.kingdee.bos.dao.*;
import com.kingdee.bos.dao.query.*;
import com.kingdee.bos.metadata.*;
import com.kingdee.bos.metadata.entity.*;
import com.kingdee.bos.ui.face.*;
import com.kingdee.bos.ui.util.ResourceBundleHelper;
import com.kingdee.bos.util.BOSUuid;
import com.kingdee.bos.service.ServiceContext;
import com.kingdee.jdbc.rowset.IRowSet;
import com.kingdee.util.enums.EnumUtils;
import com.kingdee.bos.ui.face.UIRuleUtil;
import com.kingdee.bos.ctrl.swing.event.*;
import com.kingdee.bos.ctrl.kdf.table.event.*;
import com.kingdee.bos.ctrl.extendcontrols.*;
import com.kingdee.bos.ctrl.kdf.util.render.*;
import com.kingdee.bos.ui.face.IItemAction;
import com.kingdee.eas.framework.batchHandler.RequestContext;
import com.kingdee.bos.ui.util.IUIActionPostman;
import com.kingdee.bos.appframework.client.servicebinding.ActionProxyFactory;
import com.kingdee.bos.appframework.uistatemanage.ActionStateConst;
import com.kingdee.bos.appframework.validator.ValidateHelper;
import com.kingdee.bos.appframework.uip.UINavigator;

/**
 * output class name
 */
public abstract class AbstractCalendarListUI extends
		com.kingdee.eas.framework.client.TreeDetailListUI {
	private static final Logger logger = CoreUIObject
			.getLogger(AbstractCalendarListUI.class);
	protected com.kingdee.bos.ctrl.swing.KDWorkButton btnCalendarCopy;

	/**
	 * output class constructor
	 */
	public AbstractCalendarListUI() throws Exception {
		super();
		this.defaultObjectName = "mainQuery";
		jbInit();

		initUIP();
	}

	/**
	 * output jbInit method
	 */
	private void jbInit() throws Exception {
		this.resHelper = new ResourceBundleHelper(AbstractCalendarListUI.class
				.getName());
		this.setUITitle(resHelper.getString("this.title"));
		mainQueryPK = new MetaDataPK(
				"com.kingdee.eas.custom.hr.attendance.app", "CalendarQuery");
		this.btnCalendarCopy = new com.kingdee.bos.ctrl.swing.KDWorkButton();
		this.btnCalendarCopy.setName("btnCalendarCopy");
		// CoreUI
		String tblMainStrXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><DocRoot xmlns:c=\"http://www.kingdee.com/Common\" xmlns:f=\"http://www.kingdee.com/Form\" xmlns:t=\"http://www.kingdee.com/Table\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.kingdee.com/KDF KDFSchema.xsd\" version=\"0.0\"><Styles><c:Style id=\"sCol0\"><c:Protection hidden=\"true\" /></c:Style><c:Style id=\"sCol1\"><c:NumberFormat>&amp;date</c:NumberFormat></c:Style><c:Style id=\"sCol3\"><c:Protection hidden=\"true\" /></c:Style></Styles><Table id=\"KDTable\"><t:Sheet name=\"sheet1\"><t:Table t:selectMode=\"15\" t:mergeMode=\"0\" t:dataRequestMode=\"0\" t:pageRowCount=\"100\"><t:ColumnGroup><t:Column t:key=\"id\" t:width=\"100\" t:mergeable=\"true\" t:resizeable=\"true\" t:moveable=\"true\" t:group=\"true\" t:required=\"false\" t:index=\"-1\" t:styleID=\"sCol0\" /><t:Column t:key=\"date\" t:width=\"-1\" t:mergeable=\"true\" t:resizeable=\"true\" t:moveable=\"true\" t:group=\"false\" t:required=\"false\" t:index=\"-1\" t:styleID=\"sCol1\" /><t:Column t:key=\"calendarType.name\" t:width=\"-1\" t:mergeable=\"true\" t:resizeable=\"true\" t:moveable=\"true\" t:group=\"false\" t:required=\"false\" t:index=\"-1\" /><t:Column t:key=\"treeid\" t:width=\"-1\" t:mergeable=\"true\" t:resizeable=\"true\" t:moveable=\"true\" t:group=\"false\" t:required=\"false\" t:index=\"-1\" t:styleID=\"sCol3\" /></t:ColumnGroup><t:Head><t:Row t:name=\"header1\" t:height=\"19\" t:mergeable=\"true\" t:resizeable=\"true\"><t:Cell>$Resource{id}</t:Cell><t:Cell>$Resource{date}</t:Cell><t:Cell>$Resource{calendarType.name}</t:Cell><t:Cell>$Resource{treeid}</t:Cell></t:Row></t:Head></t:Table><t:SheetOptions><t:MergeBlocks><t:Head /></t:MergeBlocks></t:SheetOptions></t:Sheet></Table></DocRoot>";

		this.tblMain.setFormatXml(resHelper.translateString("tblMain",
				tblMainStrXML));
		this.tblMain.putBindContents("mainQuery", new String[] { "id", "date",
				"calendarType.name", "" });

		this.tblMain.checkParsed();
		this.tblMain.getGroupManager().setGroup(true);
		// btnCalendarCopy
		this.btnCalendarCopy.setText(resHelper
				.getString("btnCalendarCopy.text"));
		this.btnCalendarCopy.setIcon(com.kingdee.eas.util.client.EASResource
				.getIcon("imgTbtn_copy"));
		this.btnCalendarCopy
				.addActionListener(new java.awt.event.ActionListener() {
					public void actionPerformed(java.awt.event.ActionEvent e) {
						beforeActionPerformed(e);
						try {
							btnCalendarCopy_actionPerformed(e);
						} catch (Exception exc) {
							handUIException(exc);
						} finally {
							afterActionPerformed(e);
						}
					}
				});
		// Register control's property binding
		registerBindings();
		registerUIState();

	}

	public com.kingdee.bos.ctrl.swing.KDToolBar[] getUIMultiToolBar() {
		java.util.List list = new java.util.ArrayList();
		com.kingdee.bos.ctrl.swing.KDToolBar[] bars = super.getUIMultiToolBar();
		if (bars != null) {
			list.addAll(java.util.Arrays.asList(bars));
		}
		return (com.kingdee.bos.ctrl.swing.KDToolBar[]) list
				.toArray(new com.kingdee.bos.ctrl.swing.KDToolBar[list.size()]);
	}

	/**
	 * output initUIContentLayout method
	 */
	public void initUIContentLayout() {
		this.setBounds(new Rectangle(10, 10, 1013, 629));
		this.setLayout(new KDLayout());
		this.putClientProperty("OriginalBounds", new Rectangle(10, 10, 1013,
				629));
		pnlMain.setBounds(new Rectangle(10, 10, 996, 580));
		this.add(pnlMain, new KDLayout.Constraints(10, 10, 996, 580,
				KDLayout.Constraints.ANCHOR_TOP
						| KDLayout.Constraints.ANCHOR_BOTTOM
						| KDLayout.Constraints.ANCHOR_LEFT
						| KDLayout.Constraints.ANCHOR_RIGHT));
		// pnlMain
		pnlMain.add(treeView, "left");
		pnlMain.add(pnlTable, "right");
		// treeView
		treeView.setTree(treeMain);
		// pnlTable
		pnlTable.setLayout(new BorderLayout(0, 0));
		pnlTable.add(tblMain, BorderLayout.CENTER);
		pnlTable.add(chkIncludeChild, BorderLayout.NORTH);

	}

	/**
	 * output initUIMenuBarLayout method
	 */
	public void initUIMenuBarLayout() {
		this.menuBar.add(menuFile);
		this.menuBar.add(menuEdit);
		this.menuBar.add(MenuService);
		this.menuBar.add(menuView);
		this.menuBar.add(menuBiz);
		this.menuBar.add(menuTool);
		this.menuBar.add(menuTools);
		this.menuBar.add(menuHelp);
		// menuFile
		menuFile.add(menuItemAddNew);
		menuFile.add(kDSeparator1);
		menuFile.add(menuItemImportData);
		menuFile.add(menuItemExportData);
		menuFile.add(separatorFile1);
		menuFile.add(MenuItemAttachment);
		menuFile.add(SeparatorFile2);
		menuFile.add(menuItemGroupAddNew);
		menuFile.add(separator1);
		menuFile.add(menuItemPageSetup);
		menuFile.add(menuItemPrint);
		menuFile.add(menuItemPrintPreview);
		menuFile.add(kDSeparator3);
		menuFile.add(menuItemExitCurrent);
		// menuEdit
		menuEdit.add(menuItemEdit);
		menuEdit.add(menuItemRemove);
		menuEdit.add(kDSeparator2);
		menuEdit.add(menuItemMoveTree);
		menuEdit.add(separatorEdit1);
		menuEdit.add(menuItemGroupEdit);
		menuEdit.add(menuItemGroupRemove);
		menuEdit.add(separatorEdit2);
		menuEdit.add(menuItemGroupMoveTree);
		// MenuService
		MenuService.add(MenuItemKnowStore);
		MenuService.add(MenuItemAnwser);
		MenuService.add(SepratorService);
		MenuService.add(MenuItemRemoteAssist);
		// menuView
		menuView.add(menuItemView);
		menuView.add(menuItemLocate);
		menuView.add(separatorView1);
		menuView.add(menuItemQuery);
		menuView.add(menuItemRefresh);
		menuView.add(menuItemQueryScheme);
		menuView.add(separatorView2);
		menuView.add(menuItemGroupView);
		// menuBiz
		menuBiz.add(menuItemCancelCancel);
		menuBiz.add(menuItemCancel);
		// menuTool
		menuTool.add(menuItemSendMessage);
		menuTool.add(menuItemCalculator);
		// menuTools
		menuTools.add(menuMail);
		menuTools.add(menuItemStartWorkFlow);
		menuTools.add(menuItemPublishReport);
		// menuMail
		menuMail.add(menuItemToHTML);
		menuMail.add(menuItemCopyScreen);
		menuMail.add(menuItemToExcel);
		// menuHelp
		menuHelp.add(menuItemHelp);
		menuHelp.add(kDSeparator12);
		menuHelp.add(menuItemRegPro);
		menuHelp.add(menuItemPersonalSite);
		menuHelp.add(helpseparatorDiv);
		menuHelp.add(menuitemProductval);
		menuHelp.add(kDSeparatorProduct);
		menuHelp.add(menuItemAbout);

	}

	/**
	 * output initUIToolBarLayout method
	 */
	public void initUIToolBarLayout() {
		this.toolBar.add(btnAddNew);
		this.toolBar.add(btnGroupAddNew);
		this.toolBar.add(btnGroupView);
		this.toolBar.add(btnGroupEdit);
		this.toolBar.add(btnGroupRemove);
		this.toolBar.add(btnGroupMoveTree);
		this.toolBar.add(btnView);
		this.toolBar.add(btnEdit);
		this.toolBar.add(btnRemove);
		this.toolBar.add(btnCalendarCopy);
		this.toolBar.add(btnRefresh);
		this.toolBar.add(btnQuery);
		this.toolBar.add(btnLocate);
		this.toolBar.add(btnAttachment);
		this.toolBar.add(btnMoveTree);
		this.toolBar.add(separatorFW1);
		this.toolBar.add(btnPageSetup);
		this.toolBar.add(btnQueryScheme);
		this.toolBar.add(btnPrint);
		this.toolBar.add(btnPrintPreview);
		this.toolBar.add(separatorFW2);
		this.toolBar.add(btnCancel);
		this.toolBar.add(btnCancelCancel);

	}

	// Regiester control's property binding.
	private void registerBindings() {
	}

	// Regiester UI State
	private void registerUIState() {
	}

	public String getUIHandlerClassName() {
		return "com.kingdee.eas.custom.hr.attendance.app.CalendarListUIHandler";
	}

	public IUIActionPostman prepareInit() {
		IUIActionPostman clientHanlder = super.prepareInit();
		if (clientHanlder != null) {
			RequestContext request = new RequestContext();
			request.setClassName(getUIHandlerClassName());
			clientHanlder.setRequestContext(request);
		}
		return clientHanlder;
	}

	public boolean isPrepareInit() {
		return false;
	}

	protected void initUIP() {
		super.initUIP();
	}

	/**
	 * output setDataObject method
	 */
	public void setDataObject(IObjectValue dataObject) {
		IObjectValue ov = dataObject;
		super.setDataObject(ov);
	}

	protected void Remove() throws Exception {
		IObjectValue editData = getBizInterface().getValue(
				new com.kingdee.bos.dao.ormapping.ObjectUuidPK(BOSUuid
						.read(getSelectedKeyValue())));
		super.Remove();
		recycleNumberByOrg(editData, "", editData.getString("number"));
	}

	protected void recycleNumberByOrg(IObjectValue editData, String orgType,
			String number) {
		if (!StringUtils.isEmpty(number)) {
			try {
				String companyID = null;
				com.kingdee.eas.base.codingrule.ICodingRuleManager iCodingRuleManager = com.kingdee.eas.base.codingrule.CodingRuleManagerFactory
						.getRemoteInstance();
				if (!com.kingdee.util.StringUtils.isEmpty(orgType)
						&& !"NONE".equalsIgnoreCase(orgType)
						&& com.kingdee.eas.common.client.SysContext
								.getSysContext().getCurrentOrgUnit(
										com.kingdee.eas.basedata.org.OrgType
												.getEnum(orgType)) != null) {
					companyID = com.kingdee.eas.common.client.SysContext
							.getSysContext().getCurrentOrgUnit(
									com.kingdee.eas.basedata.org.OrgType
											.getEnum(orgType)).getString("id");
				} else if (com.kingdee.eas.common.client.SysContext
						.getSysContext().getCurrentOrgUnit() != null) {
					companyID = ((com.kingdee.eas.basedata.org.OrgUnitInfo) com.kingdee.eas.common.client.SysContext
							.getSysContext().getCurrentOrgUnit())
							.getString("id");
				}
				if (!StringUtils.isEmpty(companyID)
						&& iCodingRuleManager.isExist(editData, companyID)
						&& iCodingRuleManager.isUseIntermitNumber(editData,
								companyID)) {
					iCodingRuleManager.recycleNumber(editData, companyID,
							number);
				}
			} catch (Exception e) {
				handUIException(e);
			}
		}
	}

	protected com.kingdee.eas.basedata.org.OrgType getMainBizOrgType() {
		return com.kingdee.eas.basedata.org.OrgType.getEnum("ControlUnit");
	}

	/**
	 * output loadFields method
	 */
	public void loadFields() {
		dataBinder.loadFields();
	}

	/**
	 * output storeFields method
	 */
	public void storeFields() {
		dataBinder.storeFields();
	}

	/**
	 * ????????????
	 */
	protected void registerValidator() {
		getValidateHelper().setCustomValidator(getValidator());
	}

	/**
	 * output setOprtState method
	 */
	public void setOprtState(String oprtType) {
		super.setOprtState(oprtType);
	}

	/**
	 * output btnCalendarCopy_actionPerformed method
	 */
	protected void btnCalendarCopy_actionPerformed(java.awt.event.ActionEvent e)
			throws Exception {
	}

	public SelectorItemCollection getBOTPSelectors() {
		SelectorItemCollection sic = new SelectorItemCollection();
		sic.add(new SelectorItemInfo("*"));
		sic.add(new SelectorItemInfo("creator.*"));
		sic.add(new SelectorItemInfo("lastUpdateUser.*"));
		sic.add(new SelectorItemInfo("CU.*"));
		sic.add(new SelectorItemInfo("treeid.*"));
		sic.add(new SelectorItemInfo("calendarType.*"));
		return sic;
	}

	/**
	 * output getSelectors method
	 */
	public SelectorItemCollection getSelectors() {
		SelectorItemCollection sic = new SelectorItemCollection();
		sic.add(new SelectorItemInfo("id"));
		sic.add(new SelectorItemInfo("number"));
		sic.add(new SelectorItemInfo("name"));
		sic.add(new SelectorItemInfo("simpleName"));
		sic.add(new SelectorItemInfo("description"));
		sic.add(new SelectorItemInfo("date"));
		sic.add(new SelectorItemInfo("calendarType.name"));
		return sic;
	}

	protected String getSelectDetailTreeName() {
		return "treeid";
	}

	protected EntityViewInfo[] getDetialViewInfos() {
		return new EntityViewInfo[0];
	}

	protected IMetaDataPK[] getDetailIMetaDataPKs() {
		return new MetaDataPK[0];
	}

	protected KDTable[] getDetailTables() {
		return new KDTable[0];
	}

	protected String[] getDetailRelations() {
		return new String[0];
	}

	/**
	 * output getMetaDataPK method
	 */
	public IMetaDataPK getMetaDataPK() {
		return new MetaDataPK("com.kingdee.eas.custom.hr.attendance.client",
				"CalendarListUI");
	}

	/**
	 * output getEditUIName method
	 */
	protected String getEditUIName() {
		return com.kingdee.eas.custom.hr.attendance.client.CalendarEditUI.class
				.getName();
	}

	/**
	 * output getBizInterface method
	 */
	protected com.kingdee.eas.framework.ICoreBase getBizInterface()
			throws Exception {
		return com.kingdee.eas.custom.hr.attendance.CalendarFactory
				.getRemoteInstance();
	}

	/**
	 * output createNewData method
	 */
	protected IObjectValue createNewData() {
		com.kingdee.eas.custom.hr.attendance.CalendarInfo objectValue = new com.kingdee.eas.custom.hr.attendance.CalendarInfo();
		return objectValue;
	}

	/**
	 * output getSelectedTreeKeyValue method
	 */
	protected com.kingdee.bos.dao.IObjectPK getSelectedTreeKeyValue() {
		return null;
	}

}